package com.itdachang.design.behavioral.interpreter;

/**
 * 非终结表达式
 * @author gcq
 * @create 2022-02-15
 */
public class OrExpression extends IDCardExpression {

    /**
     * 组合两个终结表达式，最终的判断结果是终结表达式判断出来的，这个表达式只是一个桥梁
     */
    private TerminalExpression cityExp;
    /**
     * 人员类型表达式
     */
    private TerminalExpression typeExp;

    public OrExpression(TerminalExpression cityExp, TerminalExpression typeExp) {
        this.cityExp = cityExp;
        this.typeExp = typeExp;
    }

    @Override
    boolean interpret(String expression) {
        // 定义所有终结表达式的合并逻辑
        return cityExp.interpret(expression) || typeExp.interpret(expression);
    }
}